package cn.iocoder.yudao.module.api.promotion.redpacket;

import cn.iocoder.yudao.module.api.promotion.redpacket.vo.RedPacketAmountVO;
import cn.iocoder.yudao.module.api.promotion.redpacket.vo.RedPacketConfigVO;
import cn.iocoder.yudao.module.api.promotion.redpacket.vo.RedPacketUsageVO;
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  这里是文件说明
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/06/27
 */
public interface RedPacketApi {

    /**
     * 获得红包配置
     *
     * @param shopId 店铺编号
     * @return 红包配置
     */
    @Nonnull
    RedPacketConfigVO getRedPacketConfig(Long shopId);

    /**
     * 获得可用红包
     *
     * @param userId  用户编号
     * @param shopId 店铺编号
     * @param orderAmount 订单金额，单位为分
     * @return 可用的红包
     */
    @Nonnull
    RedPacketUsageVO getMatchedRedPacket(@Nullable Long userId, Long shopId, Integer orderAmount);

    /**
     * 获得红包金额
     *
     * @param userId  用户编号
     * @param shopId 店铺编号
     * @return 红包金额
     */
    RedPacketAmountVO getRedPacketAmount(Long userId, Long shopId);

}
